﻿
namespace Huirui.Cavan.Presentation.Seedwork
{
    using System;
    using System.Collections.Generic;
    using System.Diagnostics.Contracts;
    using System.Linq;
    using Huirui.Cavan.Domain.MainBoundedContext.SystemModule;

    /// <summary>
    ///     This model serves as the holder of the current user information.
    ///     Properties could (should) be filled in some of the AOP filters.
    ///     The best choice would be the AccessRights evaluating one.
    ///     MasterPage then can use these values for rendering.
    ///     (suggestion: for internet app it could be extended with the transfer to login for example)
    /// </summary>
    public interface ICurrentUserModel : ICoreModel
    {
        int UserAccountID { get; set; }

        string UserName { get; set; }

        string UserLogin { get; set; }

        SystemIdentifier.Role UserRole { get; set; }

        bool RoleUseDenied { get; set; }

        string CurrentStateDescription { get; set; }

        object CurrentStateEntity { get; set; }

        string LogoutUrl { get; set; }

        string CorporationCode { get; set; }
    }
}